1
|
|
|
/** |
2
|
|
|
* @summary DataTables |
3
|
|
|
* @description Paginate, search and sort HTML tables |
4
|
|
|
* @version 1.10.0-dev |
5
|
|
|
* @file jquery.dataTables.js |
6
|
|
|
* @author Allan Jardine (www.sprymedia.co.uk) |
7
|
|
|
* @contact www.sprymedia.co.uk/contact |
8
|
|
|
* |
9
|
|
|
* @copyright Copyright 2008-2012 Allan Jardine, all rights reserved. |
10
|
|
|
* |
11
|
|
|
* This source file is free software, under either the GPL v2 license or a |
12
|
|
|
* BSD style license, available at: |
13
|
|
|
* http://datatables.net/license_gpl2 |
14
|
|
|
* http://datatables.net/license_bsd |
15
|
|
|
* |
16
|
|
|
* This source file is distributed in the hope that it will be useful, but |
17
|
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
18
|
|
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. |
19
|
|
|
* |
20
|
|
|
* For details please refer to: http://www.datatables.net |
21
|
|
|
*/ |
22
|
|
|
|
23
|
|
|
/*jslint evil: true, undef: true, browser: true */ |
24
|
|
|
/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns,_fnHungarianMap,_fnCamelToHungarian*/ |
25
|
|
|
|
26
|
|
|
(/** @lends <global> */function( window, document, undefined ) { |
|
|
|
|
27
|
|
|
|
28
|
|
|
(function( factory ) { |
29
|
|
|
"use strict"; |
30
|
|
|
|
31
|
|
|
// Define as an AMD module if possible |
32
|
|
|
if ( typeof define === 'function' && define.amd ) |
33
|
|
|
{ |
34
|
|
|
define( ['jquery'], factory ); |
35
|
|
|
} |
36
|
|
|
/* Define using browser globals otherwise |
37
|
|
|
* Prevent multiple instantiations if the script is loaded twice |
38
|
|
|
*/ |
39
|
|
|
else if ( jQuery && !jQuery.fn.dataTable ) |
40
|
|
|
{ |
41
|
|
|
factory( jQuery ); |
42
|
|
|
} |
43
|
|
|
} |
44
|
|
|
(/** @lends <global> */function( $ ) { |
45
|
|
|
"use strict"; |
46
|
|
|
|
47
|
|
|
/** |
48
|
|
|
* DataTables is a plug-in for the jQuery Javascript library. It is a |
49
|
|
|
* highly flexible tool, based upon the foundations of progressive |
50
|
|
|
* enhancement, which will add advanced interaction controls to any |
51
|
|
|
* HTML table. For a full list of features please refer to |
52
|
|
|
* <a href="http://datatables.net">DataTables.net</a>. |
53
|
|
|
* |
54
|
|
|
* Note that the <i>DataTable</i> object is not a global variable but is |
55
|
|
|
* aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which |
56
|
|
|
* it may be accessed. |
57
|
|
|
* |
58
|
|
|
* @class |
59
|
|
|
* @param {object} [oInit={}] Configuration object for DataTables. Options |
60
|
|
|
* are defined by {@link DataTable.defaults} |
61
|
|
|
* @requires jQuery 1.3+ |
62
|
|
|
* |
63
|
|
|
* @example |
64
|
|
|
* // Basic initialisation |
65
|
|
|
* $(document).ready( function { |
66
|
|
|
* $('#example').dataTable(); |
67
|
|
|
* } ); |
68
|
|
|
* |
69
|
|
|
* @example |
70
|
|
|
* // Initialisation with configuration options - in this case, disable |
71
|
|
|
* // pagination and sorting. |
72
|
|
|
* $(document).ready( function { |
73
|
|
|
* $('#example').dataTable( { |
74
|
|
|
* "bPaginate": false, |
75
|
|
|
* "bSort": false |
76
|
|
|
* } ); |
77
|
|
|
* } ); |
78
|
|
|
*/ |
79
|
|
|
var DataTable; |
80
|
|
|
|
81
|
|
|
require('core.compat.js'); |
82
|
|
|
require('core.columns.js'); |
83
|
|
|
require('core.data.js'); |
84
|
|
|
require('core.draw.js'); |
85
|
|
|
require('core.ajax.js'); |
86
|
|
|
require('core.filter.js'); |
87
|
|
|
require('core.info.js'); |
88
|
|
|
require('core.init.js'); |
89
|
|
|
require('core.length.js'); |
90
|
|
|
require('core.page.js'); |
91
|
|
|
require('core.processing.js'); |
92
|
|
|
require('core.scrolling.js'); |
93
|
|
|
require('core.sizing.js'); |
94
|
|
|
require('core.sort.js'); |
95
|
|
|
require('core.state.js'); |
96
|
|
|
require('core.support.js'); |
97
|
|
|
|
98
|
|
|
DataTable = function( oInit ) |
|
|
|
|
99
|
|
|
{ |
100
|
|
|
require('api.methods.js'); |
101
|
|
|
require('api.internal.js'); |
102
|
|
|
|
103
|
|
|
var _that = this; |
|
|
|
|
104
|
|
|
this.each(function() { |
105
|
|
|
require('core.constructor.js'); |
106
|
|
|
} ); |
107
|
|
|
_that = null; |
108
|
|
|
return this; |
109
|
|
|
}; |
110
|
|
|
|
111
|
|
|
require('api.static.js'); |
112
|
|
|
|
113
|
|
|
/** |
114
|
|
|
* Version string for plug-ins to check compatibility. Allowed format is |
115
|
|
|
* `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used |
116
|
|
|
* only for non-release builds. See http://semver.org/ for more information. |
117
|
|
|
* @member |
118
|
|
|
* @type string |
119
|
|
|
* @default Version number |
120
|
|
|
*/ |
121
|
|
|
DataTable.version = "1.10.0-dev"; |
122
|
|
|
|
123
|
|
|
/** |
124
|
|
|
* Private data store, containing all of the settings objects that are created for the |
125
|
|
|
* tables on a given page. |
126
|
|
|
* |
127
|
|
|
* Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> |
128
|
|
|
* through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>. |
129
|
|
|
* @member |
130
|
|
|
* @type array |
131
|
|
|
* @default [] |
132
|
|
|
* @private |
133
|
|
|
*/ |
134
|
|
|
DataTable.settings = []; |
135
|
|
|
|
136
|
|
|
/** |
137
|
|
|
* Object models container, for the various models that DataTables has available |
138
|
|
|
* to it. These models define the objects that are used to hold the Aktif state |
139
|
|
|
* and configuration of the table. |
140
|
|
|
* @namespace |
141
|
|
|
*/ |
142
|
|
|
DataTable.models = {}; |
143
|
|
|
require('model.ext.js'); |
144
|
|
|
require('model.search.js'); |
145
|
|
|
require('model.row.js'); |
146
|
|
|
require('model.column.js'); |
147
|
|
|
require('model.defaults.js'); |
148
|
|
|
require('model.defaults.columns.js'); |
149
|
|
|
require('model.settings.js'); |
150
|
|
|
|
151
|
|
|
/** |
152
|
|
|
* Extension object for DataTables that is used to provide all extension options. |
153
|
|
|
* |
154
|
|
|
* Note that the <i>DataTable.ext</i> object is available through |
155
|
|
|
* <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is |
156
|
|
|
* also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons. |
157
|
|
|
* @namespace |
158
|
|
|
* @extends DataTable.models.ext |
159
|
|
|
*/ |
160
|
|
|
DataTable.ext = $.extend( true, {}, DataTable.models.ext ); |
161
|
|
|
require('ext.classes.js'); |
162
|
|
|
require('ext.paging.js'); |
163
|
|
|
require('ext.sorting.js'); |
164
|
|
|
require('ext.types.js'); |
165
|
|
|
|
166
|
|
|
// jQuery aliases |
167
|
|
|
$.fn.DataTable = DataTable; |
168
|
|
|
$.fn.dataTable = DataTable; |
169
|
|
|
$.fn.dataTableSettings = DataTable.settings; |
170
|
|
|
$.fn.dataTableExt = DataTable.ext; |
171
|
|
|
|
172
|
|
|
|
173
|
|
|
// Information about events fired by DataTables - for documentation. |
174
|
|
|
/** |
175
|
|
|
* Draw event, fired whenever the table is redrawn on the page, at the same point as |
176
|
|
|
* fnDrawCallback. This may be useful for binding events or performing calculations when |
177
|
|
|
* the table is altered at all. |
178
|
|
|
* @name DataTable#draw |
179
|
|
|
* @event |
180
|
|
|
* @param {event} e jQuery event object |
181
|
|
|
* @param {object} o DataTables settings object {@link DataTable.models.oSettings} |
182
|
|
|
*/ |
183
|
|
|
|
184
|
|
|
/** |
185
|
|
|
* Filter event, fired when the filtering applied to the table (using the build in global |
186
|
|
|
* global filter, or column filters) is altered. |
187
|
|
|
* @name DataTable#filter |
188
|
|
|
* @event |
189
|
|
|
* @param {event} e jQuery event object |
190
|
|
|
* @param {object} o DataTables settings object {@link DataTable.models.oSettings} |
191
|
|
|
*/ |
192
|
|
|
|
193
|
|
|
/** |
194
|
|
|
* Page change event, fired when the paging of the table is altered. |
195
|
|
|
* @name DataTable#page |
196
|
|
|
* @event |
197
|
|
|
* @param {event} e jQuery event object |
198
|
|
|
* @param {object} o DataTables settings object {@link DataTable.models.oSettings} |
199
|
|
|
*/ |
200
|
|
|
|
201
|
|
|
/** |
202
|
|
|
* Sort event, fired when the sorting applied to the table is altered. |
203
|
|
|
* @name DataTable#sort |
204
|
|
|
* @event |
205
|
|
|
* @param {event} e jQuery event object |
206
|
|
|
* @param {object} o DataTables settings object {@link DataTable.models.oSettings} |
207
|
|
|
*/ |
208
|
|
|
|
209
|
|
|
/** |
210
|
|
|
* DataTables initialisation complete event, fired when the table is fully drawn, |
211
|
|
|
* including Ajax data loaded, if Ajax data is required. |
212
|
|
|
* @name DataTable#init |
213
|
|
|
* @event |
214
|
|
|
* @param {event} e jQuery event object |
215
|
|
|
* @param {object} oSettings DataTables settings object |
216
|
|
|
* @param {object} json The JSON object request from the server - only |
217
|
|
|
* present if client-side Ajax sourced data is used</li></ol> |
218
|
|
|
*/ |
219
|
|
|
|
220
|
|
|
/** |
221
|
|
|
* State save event, fired when the table has changed state a new state save is required. |
222
|
|
|
* This method allows modification of the state saving object prior to actually doing the |
223
|
|
|
* save, including addition or other state properties (for plug-ins) or modification |
224
|
|
|
* of a DataTables core property. |
225
|
|
|
* @name DataTable#stateSaveParams |
226
|
|
|
* @event |
227
|
|
|
* @param {event} e jQuery event object |
228
|
|
|
* @param {object} oSettings DataTables settings object |
229
|
|
|
* @param {object} json The state information to be saved |
230
|
|
|
*/ |
231
|
|
|
|
232
|
|
|
/** |
233
|
|
|
* State load event, fired when the table is loading state from the stored data, but |
234
|
|
|
* prior to the settings object being modified by the saved state - allowing modification |
235
|
|
|
* of the saved state is required or loading of state for a plug-in. |
236
|
|
|
* @name DataTable#stateLoadParams |
237
|
|
|
* @event |
238
|
|
|
* @param {event} e jQuery event object |
239
|
|
|
* @param {object} oSettings DataTables settings object |
240
|
|
|
* @param {object} json The saved state information |
241
|
|
|
*/ |
242
|
|
|
|
243
|
|
|
/** |
244
|
|
|
* State loaded event, fired when state has been loaded from stored data and the settings |
245
|
|
|
* object has been modified by the loaded data. |
246
|
|
|
* @name DataTable#stateLoaded |
247
|
|
|
* @event |
248
|
|
|
* @param {event} e jQuery event object |
249
|
|
|
* @param {object} oSettings DataTables settings object |
250
|
|
|
* @param {object} json The saved state information |
251
|
|
|
*/ |
252
|
|
|
|
253
|
|
|
/** |
254
|
|
|
* Processing event, fired when DataTables is doing some kind of processing (be it, |
255
|
|
|
* sort, filter or anything else). Can be used to indicate to the end user that |
256
|
|
|
* there is something happening, or that something has finished. |
257
|
|
|
* @name DataTable#processing |
258
|
|
|
* @event |
259
|
|
|
* @param {event} e jQuery event object |
260
|
|
|
* @param {object} oSettings DataTables settings object |
261
|
|
|
* @param {boolean} bShow Flag for if DataTables is doing processing or not |
262
|
|
|
*/ |
263
|
|
|
|
264
|
|
|
/** |
265
|
|
|
* Ajax (XHR) event, fired whenever an Ajax request is completed from a request to |
266
|
|
|
* made to the server for new data (note that this trigger is called in fnServerData, |
267
|
|
|
* if you override fnServerData and which to use this event, you need to trigger it in |
268
|
|
|
* you success function). |
269
|
|
|
* @name DataTable#xhr |
270
|
|
|
* @event |
271
|
|
|
* @param {event} e jQuery event object |
272
|
|
|
* @param {object} o DataTables settings object {@link DataTable.models.oSettings} |
273
|
|
|
* @param {object} json JSON returned from the server |
274
|
|
|
*/ |
275
|
|
|
|
276
|
|
|
/** |
277
|
|
|
* Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing |
278
|
|
|
* the bDestroy:true parameter in the initialisation object. This can be used to remove |
279
|
|
|
* bound events, added DOM nodes, etc. |
280
|
|
|
* @name DataTable#destroy |
281
|
|
|
* @event |
282
|
|
|
* @param {event} e jQuery event object |
283
|
|
|
* @param {object} o DataTables settings object {@link DataTable.models.oSettings} |
284
|
|
|
*/ |
285
|
|
|
})); |
286
|
|
|
|
287
|
|
|
}(window, document)); |
288
|
|
|
|
289
|
|
|
|
This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.